package com.code.day08;

public class Day08_Digui {
    public static void main(String[] args) {
//        method(3);
//        System.out.println(factorial(3));
//        System.out.println(feibo(5));
//
//        int[] arr = {3, 2, 1, 5, 4};
//        bubbleSort(arr);

        int[] arr = {1, 2, 3, 4, 5};
        int i = midSort(arr, 5);
        if (i != -1) {
            System.out.println("目标值  找到，索引为：" + i);
        } else {
            System.out.println("目标值 " + i + " 不存在于数组中");
        }
        System.out.println(i);
    }

    //    //    利用递归输出3到1
//    public static void method(int x) {
//        if (x == 1) {
//            System.out.println(x);
//            return;
//        } else {
//            System.out.println(x);
//            x--;
//            method(x);
//        }
//    }
//
//    //求n的阶乘
//    public static int factorial(int n) {
//        int sum = 0;
//        if (n == 1) {
//            return 1;
//        } else {
//            sum = n * factorial(n - 1);
//        }
//        return sum;
//    }
//    //计算斐波那契数列（Fibonacci）的第n个值
//    //斐波那契数列规律：一个数等于前两个数之和，比如: 1 1 2 3 5 8 13 21 34 55…
//
//    public static int feibo(int n) {
//        int x = 0;
//        if (n == 1 || n == 2) {
//            return 1;
//        } else {
//            x = feibo(n - 1) + feibo(n - 2);
//            return x;
//        }
//    }
//
//    //冒泡排序
//    public static void bubbleSort(int[] arr) {
//
//        for (int i = 0; i < arr.length; i++) {
//            for (int j = 0; j < arr.length - 1 - i; j++) {
//                int temp = 0;
//                if (arr[j] > arr[j + 1]) {
//                    temp = arr[j + 1];
//                    arr[j + 1] = arr[j];
//                    arr[j] = temp;
//                }
//            }
//        }
//        for (int i : arr) {
//            System.out.println(i);
//        }
//    }
    public static int midSort(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;

        if (arr.length == 0 || arr == null) {
            return -1;
        }
        while (left <= right) {
            int mid = (left + right) / 2;
            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return -1;
    }
}
